package cc.zstart.utils;

import java.math.BigDecimal;
import java.util.List;

public class NumberUtil {
	
    /**
     * 将金额由元转分
     * 
     * @author DaiJiangGuo
     * @data 2015年4月22日 下午2:50:54
     */
    public static Long moneyToFen(Double moneyYuan) {
        return new BigDecimal(moneyYuan).multiply(new BigDecimal(100)).longValue();
    }
    
    /**
     * 将金额由分转元
     * 
     * @author DaiJiangGuo
     * @data 2015年4月22日 下午2:50:54
     */
    public static Double moneyToYuan(Long moneyFen) {
        return new BigDecimal(moneyFen).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    
    /**
     * 
     * 
     * @param a
     * @param b
     * @return
     */
	public static boolean numEquals(Number a, Number b){
		if(a == null && b == null){
			return true;
		} else if(a == null && b != null){
			return false;
		} else if(a != null && b == null){
			return false;
		} else {
			return a.doubleValue() == b.doubleValue();
		}
	}
	
	/**
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static boolean intEquals(Number a, Number b){
		if(a == null && b == null){
			return true;
		} else if(a == null && b != null){
			return false;
		} else if(a != null && b == null){
			return false;
		} else {
			return a.longValue() == b.longValue();
		}
	}
	
	/**
	 * 
	 * @param a
	 * @param arr
	 * @return
	 */
	public static boolean numInArr(Number a, Number[] arr){
		if(arr == null) {
			return a == null;
		} else {
			for(Number o : arr){
				if(numEquals(a, o)){
					return true;
				}
			}
		}
		return false;
	}
	
	public static boolean numInList(Number a, List<? extends Number> list){
		if(list == null) {
			return a == null;
		} else {
			for(Number o : list){
				if(numEquals(a, o)){
					return true;
				}
			}
		}
		return false;
	}

	public static Integer defInteger(Integer o, Integer defVal){
		return o == null ? defVal : o;
	}

	public static Long defLong(Long o, Long defVal){
		return o == null ? defVal : o;
	}

	public static Double defDouble(Double o, Double defVal){
		return o == null ? defVal : o;
	}

	public static Float defFloat(Float o, Float defVal){
		return o == null ? defVal : o;
	}

}
